package com.zzyl.nursing.vo;

import cn.hutool.core.date.LocalDateTimeUtil;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Data
@ApiModel("设备数据曲线图响应模型")
public class DeviceDataGraphVo {
    /**
     * 日期
     */
    @ApiModelProperty(value = "日期")
    private String dateTime;

    /**
     * 数据
     */
    @ApiModelProperty(value = "数据")
    private Double dataValue;

    /**
     * 构建按日统计数据示例
     *
     * @param startTime 开始时间
     * @return 数据列表
     */
    /**
     * 根据起始时间生成一天内每个整点的设备数据实例列表
     * 此方法主要用于初始化一天内每个时间点的设备数据展示列表，用于数据统计或展示
     *
     * @param startTime 起始时间，基于此时间生成一天内每个整点的时间
     * @return 返回一天内每个整点的设备数据实例列表，每个实例包含时间点和初始化的数据值
     */
public static List<DeviceDataGraphVo> getDayInstances(LocalDateTime startTime) {
    // 初始化列表用于存储一天内每个整点的设备数据实例
    List<DeviceDataGraphVo> list = new ArrayList<>();
    // 遍历一天内的24个小时，为每个整点创建一个设备数据实例
    for (int i = 0; i < 24; i++) {
        // 创建设备数据实例
        DeviceDataGraphVo deviceDataGraphVo = new DeviceDataGraphVo();
        // 设置实例的时间点，格式为HH:00，表示整点时间
        deviceDataGraphVo.setDateTime(LocalDateTimeUtil.format(startTime.plusHours(i), "HH:00"));
        // 初始化数据值为0.0，表示尚未有数据记录
        deviceDataGraphVo.setDataValue(0.0);
        // 将实例添加到列表中
        list.add(deviceDataGraphVo);
    }
    // 返回一天内每个整点的设备数据实例列表
    return list;
}


    /**
 * 构建按周统计数据示例
 *
 * @param startTime 开始时间
 * @return 数据列表
 */
public static List<DeviceDataGraphVo> getWeekInstances(LocalDateTime startTime) {
    // 初始化一个列表，用于存储每周的设备数据图形视图对象
    List<DeviceDataGraphVo> list = new ArrayList<>();
    // 循环7天，为每一天创建并添加设备数据图形视图对象到列表中
    for (int i = 0; i < 7; i++) {
        // 创建一个新的设备数据图形视图对象
        DeviceDataGraphVo deviceDataGraphVo = new DeviceDataGraphVo();
        // 设置设备数据图形视图对象的时间，格式为"MM:dd"
        deviceDataGraphVo.setDateTime(LocalDateTimeUtil.format(startTime.plusDays(i), "MM:dd"));
        // 初始化设备数据图形视图对象的数据值为0.0
        deviceDataGraphVo.setDataValue(0.0);
        // 将设备数据图形视图对象添加到列表中
        list.add(deviceDataGraphVo);
    }
    // 返回包含7天设备数据图形视图对象的列表
    return list;
}

}